<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
</body>
</html>

<script>
  // 递归函数

  // 在编程世界里面，递归就是一个自己调用自己的手段
  // 递归函数： 一个函数内部，调用了自己，循环往复
  // 其实递归函数和循环很类似
  // 需要有初始化，自增，执行代码，条件判断的，不然就是一个没有尽头的递归函数，我们叫做 **死递归**


  // Maximum call stack size exceeded(栈溢出，死循环，混眼熟)
  // function fn() {
  //   console.log(123);
  //   fn();
  // }
  // fn();


  // 递归是需要有边界条件
  // 递：递进
  // 归：返回
  // 做一个5！的函数
  // 5! = 5 * 4 * 3 * 2 * 1;
  // 5! = 5 * 4!;
  // 4! = 4 * 3!;
  // 3! = 3 * 2!;
  // 2! = 2 * 1;
  // function fn(n) {
  //   // 表示的递归的边界
  //   if (n === 1) {
  //     return 1;
  //   }
  //   return n * fn(n - 1);
  // }
  // console.log(fn(5));


  // 1+2+3+...+100
  // function fn2(n) {
  //   if (n === 1) {
  //     return 1;
  //   }
  //   return n + fn2(n - 1);
  // }
  // console.log(fn2(100))







  // 斐波那契数列
  // 1、1、2、3、5、8、13、21、34、55、89、144...
  // 求斐波那契数列的第10项
  // fibonacci(10) = fibonacci(9) + fibonacci(8);
  // fibonacci(9) = fibonacci(8) + fibonacci(7);
  // fibonacci(8) = fibonacci(7) + fibonacci(6);
  // ...
  // fibonacci(3) = fibonacci(2) + fibonacci(1);
  // fibonacci(2) = 1;
  // fibonacci(1) = 1;

  // function fibonacci(n) {
  //   if (n === 2 || n === 1) {
  //     return 1;
  //   }
  //   return fibonacci(n - 1) + fibonacci(n - 2);
  // }
  // console.log(fibonacci(10));





  // 编写一个函数，输入n为偶数，调用函数求1/2+1/4+...+1/n
  // fn(10) = 1/10 + fn(8);
  // fn(8) = 1/8 + fn(6);
  // function fn(n) {
  //   if (n === 2) {
  //     return 1/2
  //   }
  //   return 1/n + fn(n-2);
  // }
  // console.log(fn(6));


  

  // 更加建议能用循环的时候用循环,毕竟递归要考虑边界，容易出现栈溢出
  // 而且递归的性能也不是很好



  // [
  //   {
  //     title: "浙江省",
  //     children: [
  //       {
  //         title: "杭州市",
  //         children: []
  //       },
  //       {
  //         title: "宁波市",
  //         children: []
  //       }
  //     ]
  //   },
  //   {
  //     title: "江苏省"
  //   },
  //   {
  //     title: "上海市"
  //   }
  // ]
</script>